package bancosys.tec.utils.db.cleaner;

import java.sql.Connection;

/**
 * utilitário para limpar um banco de dados. <br>
 * Extendido para cada banco de dados, com implementações específicas de limpeza. <br>
 * A conexão com o banco de dados é gerenciada externamente, inclusive transação.
 */
public abstract class DbCleaner {
    private Connection conn;

    /**
     * Construtor.
     * 
     * @param conn a conexão sql utilizada para executar a limpeza.
     */
    public DbCleaner(Connection conn) {
        this.conn = conn;
    }

    /**
     * Dropa o banco de dados.
     */
    public abstract void drop();

    /**
     * Limpa (deleta) o banco de dados. <br>
     * Garante que as constraints são desabilitadas/habilitadas.
     */
    public abstract void clean();

    /**
     * Retorna a conexão sql.
     * 
     * @return a conexão sql.
     */
    public Connection getConn() {
        return this.conn;
    }

}
